package cn.tedu.kcircle.content.front.service;

import cn.tedu.kcircle.common.po.CurrentPrincipal;
import cn.tedu.kcircle.common.po.PageData;
import cn.tedu.kcircle.content.front.service.bo.ContentAddBO;
import cn.tedu.kcircle.content.front.service.bo.ContentListItemBO;
import cn.tedu.kcircle.content.front.service.bo.ContentStandardBO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
public interface ContentFrontService extends ResourceTypeConst {

    void addQuestion(ContentAddBO contentAddBO);
    void addArticle(ContentAddBO contentAddBO);

    void addVideo(ContentAddBO contentAddBO);

    void addAnswer(ContentAddBO contentAddBO);

    void addIdea(ContentAddBO contentAddBO);

    /**
     * 根据ID删除文章数据
     *
     * @param id 文章ID
     */
    void deleteById(Long id);

    /**
     * 审核通过文章
     *
     * @param currentPrincipal 当事人
     * @param id               尝试审核通过的文章的ID
     * @param remarks          审核备注
     */
    void passCheck(CurrentPrincipal currentPrincipal, Long id, String remarks);

    /**
     * 拒绝审核文章
     *
     * @param currentPrincipal 当事人
     * @param id               尝试拒绝审核的文章的ID
     * @param remarks          审核备注
     */
    void rejectCheck(CurrentPrincipal currentPrincipal, Long id, String remarks);

    /**
     * 根据ID查询文章
     *
     * @param id 文章ID
     * @return 匹配的文章数据详情，如果没有匹配的数据，则返回null
     */
    ContentStandardBO getStandardById(Long id);

    /**
     * 查询文章列表，将使用默认的每页记录数
     *
     * @param pageNum 页码
     * @return 文章列表
     */
    PageData<ContentListItemBO> list(Integer pageNum);
    /**
     * 查询用户动态，将使用默认的每页记录数
     * @return 文章列表
     */
    List<Object> getUserActivities(CurrentPrincipal currentPrincipal);

}
